home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / asm-m32r / pgalloc.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.7 KB  |  77 lines

  1. #ifndef _ASM_M32R_PGALLOC_H
  2. #define _ASM_M32R_PGALLOC_H
  3.  
  4. #include <linux/mm.h>
  5.  
  6. #include <asm/io.h>
  7.  
  8. #define pmd_populate_kernel(mm, pmd, pte)    \
  9.     set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(pte)))
  10.  
  11. static __inline__ void pmd_populate(struct mm_struct *mm, pmd_t *pmd,
  12.     pgtable_t pte)
  13. {
  14.     set_pmd(pmd, __pmd(_PAGE_TABLE + page_to_phys(pte)));
  15. }
  16. #define pmd_pgtable(pmd) pmd_page(pmd)
  17.  
  18. /*
  19.  * Allocate and free page tables.
  20.  */
  21. static __inline__ pgd_t *pgd_alloc(struct mm_struct *mm)
  22. {
  23.     pgd_t *pgd = (pgd_t *)__get_free_page(GFP_KERNEL|__GFP_ZERO);
  24.  
  25.     return pgd;
  26. }
  27.  
  28. static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
  29. {
  30.     free_page((unsigned long)pgd);
  31. }
  32.  
  33. static __inline__ pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
  34.     unsigned long address)
  35. {
  36.     pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_ZERO);
  37.  
  38.     return pte;
  39. }
  40.  
  41. static __inline__ pgtable_t pte_alloc_one(struct mm_struct *mm,
  42.     unsigned long address)
  43. {
  44.     struct page *pte = alloc_page(GFP_KERNEL|__GFP_ZERO);
  45.  
  46.     pgtable_page_ctor(pte);
  47.     return pte;
  48. }
  49.  
  50. static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
  51. {
  52.     free_page((unsigned long)pte);
  53. }
  54.  
  55. static inline void pte_free(struct mm_struct *mm, pgtable_t pte)
  56. {
  57.     pgtable_page_dtor(pte);
  58.     __free_page(pte);
  59. }
  60.  
  61. #define __pte_free_tlb(tlb, pte)    pte_free((tlb)->mm, (pte))
  62.  
  63. /*
  64.  * allocating and freeing a pmd is trivial: the 1-entry pmd is
  65.  * inside the pgd, so has no extra memory associated with it.
  66.  * (In the PAE case we free the pmds as part of the pgd.)
  67.  */
  68.  
  69. #define pmd_alloc_one(mm, addr)        ({ BUG(); ((pmd_t *)2); })
  70. #define pmd_free(mm, x)            do { } while (0)
  71. #define __pmd_free_tlb(tlb, x)        do { } while (0)
  72. #define pgd_populate(mm, pmd, pte)    BUG()
  73.  
  74. #define check_pgt_cache()    do { } while (0)
  75.  
  76. #endif /* _ASM_M32R_PGALLOC_H */
  77.